home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 June / PCpro_2005_06.ISO / files / opensource / amc / amc_install.exe / {app} / Scripts / 7arte.ifs < prev    next >
Encoding:
Text File  |  2005-03-12  |  7.5 KB  |  249 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=O Guardiπo (bruno_mga@hotmail.com)
  8. Title=7a Arte
  9. Description=Movie importation script for 7a Arte
  10. Site=www.7arte.net
  11. Language=PT
  12. Version=2.3 (8 Fev 2005)
  13. Requires=3.5.0
  14. Comments=Script feito por O Guardiπo (bruno_mga@hotmail.com) para o site "www.7arte.net" |
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program arte;
  23. const
  24.   BaseAddress = 'www.7arte.net/';
  25. var
  26.   MovieName: string;
  27.  
  28. function UpFirstLetterWord(texto:string):string; //Function Made By O Guardiπo
  29. var espaco:integer;
  30.  sst:string;
  31. begin
  32. texto:=AnsiUpFirstLetter(AnsiLowerCase(texto));
  33. repeat
  34.     espaco:=Pos(' ',texto);
  35.     sst:=AnsiUpperCase(Copy(texto,espaco+1,1));
  36.     texto:=Copy(texto,1,espaco-1)+'/|\'+sst+Copy(texto,espaco+2,length(texto));
  37. until Pos(' ',texto)=0;
  38. texto := StringReplace(texto, '/|\', ' ');
  39. if Copy(texto,1,1)=' ' then//se a 1║ pos Θ espaτo
  40.   texto:=Copy(texto,2,length(texto));
  41. result:=texto;
  42. end;
  43.  
  44. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  45. var
  46.   i: Integer;
  47. begin
  48.   result := -1;
  49.   if StartAt < 0 then
  50.     StartAt := 0;
  51.   for i := StartAt to List.Count-1 do
  52.     if Pos(Pattern, List.GetString(i)) <> 0 then
  53.     begin
  54.       result := i;
  55.       Break;
  56.     end;
  57. end;
  58. function HTMLRemove(Value: String): String;
  59. begin
  60.   HTMLDecode(Value);
  61.   HTMLRemoveTags(Value);
  62.   Value := Trim(Value);
  63.   result := Value;
  64. end;
  65. procedure AnalyzeFilmPage(Address: String);
  66. var
  67.   Page : TStringList;
  68.   Line, Value : string;
  69.   LineNr, BeginPos, EndPos: Integer;
  70.   AllTitles: TStringList;
  71. begin
  72.   Page := TStringList.Create;
  73.   Page.Text := GetPage('http://proxify.com/p/001110A0000110/http/'+Address);
  74.   SetField(fieldURL, Address);
  75.  
  76.  
  77.   //para continuar deve ser diferente destas mensagens
  78.   if (FindLine('Due to extremely high usage, Proxify is temporarily allowing access only to paid subscribers. We apologize for the inconvenience.', Page, 0)<>-1) and (FindLine('POR FAVOR TENTE MAIS TARDE.', Page, 0)<>-1) then
  79.   showmessage('Servidor encontra-se indisponivel.')
  80.   else
  81.   begin
  82.   //modo alternativo para obter o nome traduzido
  83.   LineNr := FindLine('Critique o Filme', Page, 0);
  84.   if LineNr<>-1 then
  85.   begin
  86.     Value := Page.GetString(LineNr);
  87.     value:=HTMLRemove(value);
  88.     value:=Copy(value,17,length(value));
  89.     SetField(fieldTranslatedTitle, Value);
  90.   end
  91.   else
  92.   begin
  93.     //nome traduzido do filme
  94.     LineNr := FindLine('<FONT FACE="Arial,Helvetica"><FONT SIZE=+1>', Page, 0);
  95.     Value := Page.GetString(LineNr);
  96.     value:=HTMLRemove(value);
  97.     Value:=UpFirstLetterWord(Value);
  98.     SetField(fieldTranslatedTitle, Value);
  99.   end;
  100.  
  101.   //nome original do filme
  102.   LineNr := FindLine('<FONT FACE="Arial,Helvetica"><FONT SIZE=+1>', Page, 0);
  103.   value:= Page.GetString(LineNr+1);
  104.   Value := HTMLRemove(Value);
  105.   SetField(fieldOriginalTitle, Value);
  106.  
  107.   //pontuaτπo
  108.   LineNr := FindLine('<FONT SIZE=-1 FACE="Arial,Helvetica"><B>', Page, 0);
  109.   Value := Page.GetString(LineNr);
  110.   value:=HTMLRemove(value);
  111.   if (pos('.',value)<>-1) then
  112.    BeginPos:=StrToInt(copy(value,3,1),0);
  113.    if BeginPos>4 then
  114.      value:=IntToStr(1+StrToInt(Copy(value,1,1),0))
  115.   else
  116.   value:=Copy(value,1,1);
  117.   SetField(fieldRating, Value);
  118.  
  119.   //realizador
  120.   LineNr := FindLine('>Realizador:</', Page, 0);
  121.   Value := HTMLRemove(Page.GetString(LineNr));
  122.   value:=Copy(value,13,length(value));
  123.   SetField(fieldDirector, Value);
  124.  
  125.   //actores
  126.   Line:='';
  127. //  LineNr := FindLine('<B>╗</B> <a>', Page, 0);
  128.   LineNr := FindLine('<B>Actores:</B><BR><FONT Size=-1>', Page, 0);
  129.   lineNr:=lineNr+1;
  130.   repeat
  131.   value:=Page.GetString(LineNr);
  132.   if line<>'' then line:=line+', ';  // virgula entre cada nome
  133.   Line:=line+Copy(HTMLRemove(value),3,length(value));
  134.   lineNr:=lineNr+1;
  135.   value:=Page.GetString(LineNr);
  136.   until pos('</FONT></TD>',value)<> 0;
  137.   SetField(fieldActors, Line);
  138.  
  139.   //ano
  140.   LineNr := FindLine('><B>Ano:</B>', Page, 0);
  141.   value:=Copy(HTMLRemove(Page.GetString(LineNr)),6,length(value));
  142.   SetField(fieldYear, value);
  143.  
  144.   //duraτπo
  145.   LineNr := FindLine('<B>Duraτπo:</B> <FONT SIze=-1>', Page, 0);
  146.   value:=HTMLRemove(Page.GetString(LineNr));
  147.   Value := StringReplace(Value, 'Duraτπo: ', '');
  148.   Value := StringReplace(Value, ' minutos', '');
  149.   SetField(fieldLength, value);
  150.  
  151.   //genero
  152.   LineNr := FindLine('<B>GΘnero:</B> <FONT SIze=-1>', Page, 0);
  153.   value:=HTMLRemove(Page.GetString(LineNr));
  154.   Value := StringReplace(Value, 'GΘnero: ', '');
  155.   SetField(fieldCategory, value);
  156.  
  157.   //paφs
  158.   LineNr := FindLine('<B>Paφs de Origem:</B> <FONT SIze=-1>', Page, 0);
  159.   value:=HTMLRemove(Page.GetString(LineNr));
  160.   Value := StringReplace(Value, 'Paφs de Origem: ', '');
  161.   SetField(fieldCountry, value);
  162.   
  163.   //descriτπo
  164.   LineNr := FindLine('<B>Sinopse:</B><BR>', Page, 0);
  165.   if LineNr<>-1 then
  166.   begin
  167.   value:='';
  168.   repeat
  169.   LineNr:=LineNr+1;
  170.   value:=value+Page.GetString(LineNr);
  171.   until Pos('</TD>', Page.GetString(LineNr)) <> 0; //ate encontrar o </Td>
  172.   value:=HTMLRemove(value);
  173.   Value := StringReplace(Value, ' [ www.7arte.net ]', '');
  174.   SetField(fieldDescription, value);
  175.   end;
  176.  
  177.   // Get Picture
  178.   LineNr := FindLine('/imagens/filmes/', Page, 0);
  179.   if LineNr > -1 then
  180.   begin
  181.     value := Page.GetString(LineNr);
  182.     BeginPos := pos('src="', value)+5;
  183.     EndPos := pos('.jpg', value);
  184.   if endpos=0 then
  185.     EndPos := pos('.gif', value);
  186.     Value :=copy(value, BeginPos,4+EndPos-BeginPos);
  187.     GetPicture(Value);
  188.   end;
  189.  
  190.   
  191.   
  192. end;
  193. end;
  194.  
  195. procedure AnalyzePage(Address,Address2: string);
  196. var
  197.   Page: TStringList;
  198.   LineNr, StartPos, EndPos: Integer;
  199.   Line: string;
  200.   x:integer;
  201.   MovieAddress, findMovieName,linedown : string;
  202. begin
  203.   PickTreeClear;
  204.   Page := TStringList.Create;
  205.   Page.Text := GetPage(Address);
  206.  
  207. for x:=1 to 2 do
  208. begin
  209.   if (pos('Resultados Encontrados', Page.Text)>0) then
  210.   begin
  211.     LineNr :=0;
  212.     repeat
  213.       LineNr := FindLine('/cgi-bin/filme.pl?codigo=', Page, LineNr);
  214.       If LineNr >0 Then Begin
  215.         Line := Page.GetString(LineNr);
  216.         StartPos := pos('cgi-bin/filme.pl?codigo=', Line);
  217.         EndPos := pos(')">',Line)-1;
  218.         MovieAddress :=  copy(Line, StartPos, EndPos - StartPos);
  219.         StartPos := EndPos + 15;
  220.         StartPos :=  EndPos+4;
  221.         endpos:=pos('</A><BR>',Line);
  222.         Line:=Copy(Line,startpos,endpos);
  223.         findmoviename:=HTMLRemove(Line);
  224.         HTMLRemoveTags(FindMovieName);
  225.         HTMLDecode(FindMovieName);
  226.         PickTreeAdd(FindMovieName, BaseAddress + MovieAddress);
  227.         LineNr := LineNr + 1;
  228.       End;
  229.     until (LineNr<1);
  230.     end;
  231.         Page.Text := GetPage(Address2);
  232. end;
  233.  
  234. if PickTreeExec(Address) then
  235.    AnalyzeFilmPage(Address)
  236.   Page.Free
  237. end;
  238.  
  239. begin
  240.   PickListClear;
  241.   MovieName := GetField(fieldOriginalTitle);
  242.   if Input('Importar do www.7arte.net', 'Escreva o nome do filme:', MovieName) then begin
  243.   //espaτo nπo sπo permitidos
  244.   MovieName := StringReplace(MovieName, ' ', '%20');
  245.   AnalyzePage('http://proxify.com/p/001110A0000110/http/www.7arte.net/cgi-bin/arq_search_orig.pl?letra=&proc='+MovieName,'http://proxify.com/p/001110A0000110/http/www.7arte.net/cgi-bin/arq_search.pl?proc='+MovieName);
  246.   end;
  247. end.
  248.  
  249.